package com.qdxwx.data.service.member;

import com.qdxwx.common.page.PageRequest;
import com.qdxwx.models.member.MemberRecord;
import com.qdxwx.models.member.MemberRecordVO;
import com.qdxwx.models.manager.Manager;
import com.qdxwx.models.member.MemberSale;
import com.qdxwx.models.order.OrderDetail;

import java.util.List;


/**
 * MemberRecord接口
 * Qdx NetSchool Platform
 * @author qdxwx
 * @updateTime 2022/5/25
 * @description
 */
public interface MemberRecordService {
    /**
     * 添加MemberRecord
     */
    void insert(MemberRecord memberRecord);

    void addByOrderDetail(OrderDetail detail, MemberSale sale);

    /**
     * 修改MemberRecord
     */
    void update(MemberRecord memberRecord);
    /**
     * 延期操作
     */
    void updateEndDate(MemberRecord memberRecord, Manager manager);
    /**
     * 会员关闭 更新状态
     */
    void updateStatus(MemberRecord memberRecord);
    /**
     * 根据id获取单个MemberRecord对象
     */
    MemberRecord get(Long id);

    /**
     * 根据用户id、会员类型查询MemberRecord对象(不论是否过期)
     * @param userId
     * @param type
     * @return
     */
    MemberRecord getByUserId(Long userId, Integer type);

    /**
     * 根据用户id、会员类型查询MemberRecord对象(有效期之内)
     * @param userId
     * @param type
     * @return
     */
    MemberRecord getValidByUserId(Long userId, Integer type);

    /**
     * 查询用户的全部会员开通记录
     */
    List<MemberRecord> getListByUserId(Long userId, PageRequest page);

    List<MemberRecordVO> getVOList(MemberRecord memberRecord, PageRequest page);

    List<MemberRecord> getList(MemberRecord memberRecord, PageRequest page);

    int count(MemberRecord memberRecord);

    int deleteByIds(String ids);

    int delete(long id);

    int updateCombine(long userId1, long userId2);
}